#include <cpr/cpr.h>
#include <fstream>
#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

void download_file(const std::string& url, const std::string& output_file) {
    // 发送 GET 请求
    cpr::Response r = cpr::Get(cpr::Url{url});

    // 检查请求是否成功
    if (r.status_code != 200) {
        std::cerr << "Failed to download file: " << r.status_code << std::endl;
        return;
    }

    // 将响应内容写入文件。
    // 这里看起来像一个方法，但实际上是一个变量。
    std::ofstream ofs(output_file, std::ios::binary);

    if (!ofs) {
        std::cerr << "Failed to open output file: " << output_file << std::endl;
        return;
    }
    ofs.write(r.text.c_str(), r.text.size());
    ofs.close();

    // 获取文件的绝对路径
    fs::path abs_path = fs::absolute(output_file);
    std::cout << "File downloaded successfully to " << abs_path << std::endl;
}

/**
* cpr下载
*/
int main2() {
    std::string url = "http://files.cupb.top/api/file/download?fileUuid=d53f5a3fef4d1bb12000651cf148767c";
    std::string output_file = "file.png";

    download_file(url, output_file);

    return 0;
}
